#include <bits/stdc++.h>
using namespace std;
using LL = long long;

const int MOD = 998244353;

LL bin(LL a, LL b, LL p) {
	LL res = 1;
	for (; b; b>>=1, a=a*a%p)
		if (b & 1) res = res * a % p;
	return res;
}

int n, q;

const int N = 2e5+5;
set<int> S;

LL steps[N], p[N], a[N];
bool on[N];
LL pre[N], invp[N];

inline LL getlr(int l, int r, LL pre[], LL invp[]) {
	return pre[r] * invp[l-1] % MOD;
}

inline pair<int, int> getneighbour(int u) {
	return make_pair(*(--S.lower_bound(u)), *S.upper_bound(u));
}

struct segT {
	LL dat[N << 2];
	LL lazy[N << 2];

	int nn;

	inline void pu(int rt) {
		dat[rt] = (dat[rt<<1] + dat[rt<<1|1]) % MOD;
	}

	inline void pd(int rt) {
		if (lazy[rt] != 1) {
			int ls = rt<<1, rs = rt<<1|1;
			dat[ls] = (dat[ls] * lazy[rt]) % MOD;
			dat[rs] = (dat[rs] * lazy[rt]) % MOD;
			lazy[ls] = (lazy[ls] * lazy[rt]) % MOD;
			lazy[rs] = (lazy[rs] * lazy[rt]) % MOD;
			lazy[rt] = 1;
		}
	}

	void init(int n, LL a[]) {
		nn = 1;
		while (nn < n) nn <<= 1;

		for (int i=1; i<=2*nn; ++i) {lazy[i] = 1; dat[i] = 0;}
		for (int i=1; i<=n; ++i) {
			dat[i+nn-1] = a[i];
		}

		for (int i=nn-1; i>=1; --i)
			pu(i);

	}
	int L, R;
	void u(int l, int r, int rt, LL v) {
		if (L <= l && r <= R) {
			dat[rt] = (dat[rt] * v) % MOD;
			lazy[rt] = (lazy[rt] * v) % MOD;
			return;
		}
		pd(rt);
		int m = (l+r) >> 1;
		if (L <= m) u(l, m, rt<<1, v);
		if (m+1<=R) u(m+1,r,rt<<1|1, v);
		pu(rt);
	}

	LL q(int l, int r, int rt) {
		if (L <= l && r <= R)
			return dat[rt];
		pd(rt);
		int m = (l+r) >> 1;
		LL sum = 0;
		if (L <= m) sum = (sum + q(l, m, rt<<1)) % MOD;
		if (m+1<=R) sum = (sum + q(m+1,r,rt<<1|1)) % MOD;
		pu(rt);
		return sum;
	}

	inline LL q(int l, int r) { L = l; R = r; return q(1, nn, 1);}
	inline void u(int l, int r, LL v) {L = l; R = r; u(1, nn, 1, v); }
} seg;




int main(int argc, char const *argv[])
{
	scanf("%d%d", &n, &q);
	for (int i=1; i<=n; ++i) {
		scanf("%lld", &p[i]);
		steps[i] = 100LL * bin(p[i], MOD-2, MOD) % MOD;
		// printf("%lld %lld\n", 1LL * i, steps[i]);
	}

	pre[0] = invp[0] = 1;
	for (int i=1; i<=n; ++i) {
		pre[i] = pre[i-1] * steps[i] % MOD;
		invp[i] = bin(pre[i], MOD-2, MOD);

		// printf("%lld %lld\n", i, pre[i]);
		// printf("%lld %lld\n", i, invp[i]);
	}
	// cout << (pre[5] * (invp[4] + invp[3] + invp[2] + invp[1]) % MOD + steps[1]) % MOD << endl; return 0;
	// cout << pre[5] * invp[1] % MOD << endl; return 0;


	for (int i=1; i<=n; ++i)
		a[i] = pre[n] * invp[i-1] % MOD;
	seg.init(n, a);

	// printf("%lld\n", seg.q(1, n));
	S.insert(1);
	S.insert(n+1);

	for (int kk=0; kk<q; ++kk) {
		int x;
		 scanf("%d", &x);
		// for (int i=1; i<=n; ++i) {
		// 	printf("before, i=%d, seg.q(i,i)=%lld\n", i, seg.q(i,i));
		// }
		if (on[x]) {
			S.erase(x);
			pair<int, int> nei = getneighbour(x);
			LL c = getlr(x, nei.second-1, pre, invp);
			seg.u(nei.first, x-1, c);
			printf("%lld\n", seg.q(1, n));
		} else {
			pair<int, int> nei = getneighbour(x);
			LL c = getlr(x, nei.second-1, invp, pre);
			// LL c = invp[nei.second-1] * pre[x-1] % MOD;
			// printf("2, %lld  %d %d, %d %d, %lld %lld\n", c, nei.first, x-1, x, nei.second-1, invp[nei.second-1], pre[x-1]);
			seg.u(nei.first, x-1, c);
			printf("%lld\n", seg.q(1, n));
			S.insert(x);
		}
		// for (int i=1; i<=n; ++i) {
		// 	printf("after, i=%d, seg.q(i,i)=%lld\n", i, seg.q(i,i));
		// }


		on[x] = 1-on[x];
	}

	return 0;
}
 